Knowledge systems are computer systems that emulate reasoning tasks by using an "inference engine" to interpret encoded knowledge of human experts stored in a "knowledge base." If the domain of the knowledge base, or scope of the problem, is sufficiently narrow and a sufficiently large body of the knowledge is properly coded in the knowledge base, then the knowledge system can achieve performance matching or exceeding the ability of a human expert. In such a case the knowledge system becomes an "expert system."
The most difficult step in building expert systems involves encoding unstructured, often even unarticulated, knowledge into machine readable form. The encoding process is performed by a "knowledge engineer" who must be adept at both the milking of knowledge from a human expert and the encoding of the knowledge into the machine readable expert system language. The ease of the encoding step is dependent on the particular syntax, intelligibility, and capabilities of the expert system language itself, as well as the availability of "knowledge engineering tools" used by the knowledge engineer to test, debug, augment and modify the knowledge base. Due to the lack of knowledge engineering tools based on a transparent expert system language, a person needs a good deal of formal education in computer science as well as specialized training in knowledge engineering to become a skilled knowledge engineer. To build an expert system it is far easier for the knowledge engineer to become a pseudo-expert in the knowledge domain of the human expert than it is for the human expert to learn knowledge engineering and directly encode his or her knowledge into machine readable form.
Another factor limiting the implementation of expert systems is that only a relatively small number of engineers and managers are aware of knowledge systems, so that the number of systems conceived and undertaken is far smaller than it might be. Moreover, after a system is conceived, a small prototype system is desired to demonstrate that a knowledge system would actually be useful in a given context. Currently, some prototyping can be done with well known knowledge engineering tools such as MRS and EMYCIN. Commercial versions of these tools, such as KS300 sold by Teknowledge, Inc. 525 University Avenue, Palo Alto, California 94301, are written in a dialect of LISP and require a rather large computer. The EMYCIN language itself also has a few undesirable limitations such as the inability to handle recursive rules and universally quantified variables.